#include <iostream>

/**
 * 又称完美数或完备数，是一些特殊的自然数：它所有的真因子（即除了自身以外的约数）的和（即因子函数），恰好等于它本身。
 * */


using namespace std;

/**
 * @fn 完美数判定函数
 * @brif 
 * @param num 待判定的完美数
 * @return 是完美数返回true，否则返回false
 * */
bool is_perfect_number (unsigned num)
{
	int tmp = 0;
	int half_num = num / 2;
	for (int j = 1; j <= half_num; j++)
	{
		if (num%j == 0)
		{
			tmp += j;
		}
	}
	if (tmp == num)
	{
		return true;
	}
	return false;
}

int main ()
{
	for (int i = 1; i < 10000; i++)	//
	{
		if (is_perfect_number(i))
		{
			cout << i << endl;
		}
	}
	return 0;
}


